{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Enrich Example\n",
    "\n",
    "As in Part 1, we are looking at the example of a large retailer evaluating potential sites for a new location. This retailer is interested in using key criteria they know are important based on previous experience to evaluate a few candidates. These criteria include competition, traffic, economic feasibility and market potential for the areas surrounding the potential sites. Utilizing the GeoEnrichment module, the real estate site selection team can include demographic variables such as lifestyle, income, spending and education to understand potential customers in the study areas surrounding the candidate sites."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Although we will go a similar route, in this example all we have to start with are addresses."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from arcgis.geoenrichment import Country, enrich\n",
    "from arcgis.gis import GIS\n",
    "\n",
    "gis = GIS(profile=\"your_online_profile\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Country - United States (GIS @ https://geosaurus.maps.arcgis.com version:10.3)>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "country = Country(\"usa\", gis=gis)\n",
    "country"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Name</th>\n",
       "      <th>Address</th>\n",
       "      <th>City</th>\n",
       "      <th>State</th>\n",
       "      <th>Zip Code</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Facility 1</td>\n",
       "      <td>2468 SOUTH ST ANDREWS PLACE</td>\n",
       "      <td>LOS ANGELES</td>\n",
       "      <td>CA</td>\n",
       "      <td>90018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Facility 2</td>\n",
       "      <td>2300 W. WASHINGTON BLVD.</td>\n",
       "      <td>LOS ANGELES</td>\n",
       "      <td>CA</td>\n",
       "      <td>90018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Facility 3</td>\n",
       "      <td>4060 E. WHITTIER BLVD.</td>\n",
       "      <td>LOS ANGELES</td>\n",
       "      <td>CA</td>\n",
       "      <td>90023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Facility 4</td>\n",
       "      <td>6070 W. PICO BOULEVARD</td>\n",
       "      <td>LOS ANGELES</td>\n",
       "      <td>CA</td>\n",
       "      <td>90035</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Facility 5</td>\n",
       "      <td>1480 S. LA CIENEGA BL</td>\n",
       "      <td>LOS ANGELES</td>\n",
       "      <td>CA</td>\n",
       "      <td>90035</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Name                      Address         City State  Zip Code\n",
       "0  Facility 1  2468 SOUTH ST ANDREWS PLACE  LOS ANGELES    CA     90018\n",
       "1  Facility 2     2300 W. WASHINGTON BLVD.  LOS ANGELES    CA     90018\n",
       "2  Facility 3       4060 E. WHITTIER BLVD.  LOS ANGELES    CA     90023\n",
       "3  Facility 4       6070 W. PICO BOULEVARD  LOS ANGELES    CA     90035\n",
       "4  Facility 5        1480 S. LA CIENEGA BL  LOS ANGELES    CA     90035"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "candidate_df = pd.read_csv(\"../data/health.csv\").loc[\n",
    "    :, [\"Name\", \"Address\", \"City\", \"State\", \"Zip Code\"]\n",
    "]\n",
    "\n",
    "candidate_df"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, we are going to concatenate the address into one column and rename the `Name` column to `loc_id` to match more closely with the example from the GeoEnrichment Part 1 notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>loc_id</th>\n",
       "      <th>full_address</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Facility 1</td>\n",
       "      <td>2468 SOUTH ST ANDREWS PLACE, LOS ANGELES, CA 9...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Facility 2</td>\n",
       "      <td>2300 W. WASHINGTON BLVD., LOS ANGELES, CA 90018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Facility 3</td>\n",
       "      <td>4060 E. WHITTIER BLVD., LOS ANGELES, CA 90023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Facility 4</td>\n",
       "      <td>6070 W. PICO BOULEVARD, LOS ANGELES, CA 90035</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Facility 5</td>\n",
       "      <td>1480 S. LA CIENEGA BL, LOS ANGELES, CA 90035</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       loc_id                                       full_address\n",
       "0  Facility 1  2468 SOUTH ST ANDREWS PLACE, LOS ANGELES, CA 9...\n",
       "1  Facility 2    2300 W. WASHINGTON BLVD., LOS ANGELES, CA 90018\n",
       "2  Facility 3      4060 E. WHITTIER BLVD., LOS ANGELES, CA 90023\n",
       "3  Facility 4      6070 W. PICO BOULEVARD, LOS ANGELES, CA 90035\n",
       "4  Facility 5       1480 S. LA CIENEGA BL, LOS ANGELES, CA 90035"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create full address string to make geocoding easier\n",
    "candidate_df[\"full_address\"] = candidate_df.apply(\n",
    "    lambda r: \", \".join((r[\"Address\"], r[\"City\"], r[\"State\"])) + f' {r[\"Zip Code\"]}',\n",
    "    axis=1,\n",
    ")\n",
    "\n",
    "# filter columns\n",
    "candidate_df = candidate_df.loc[:, [\"Name\", \"full_address\"]].rename(\n",
    "    columns={\"Name\": \"loc_id\"}\n",
    ")\n",
    "\n",
    "candidate_df"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Enrich Variables\n",
    "\n",
    "We are going to use the same variables for enrichment as in Part 1."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['TOTPOP_CY',\n",
       " 'DIVINDX_CY',\n",
       " 'AVGHHSZ_CY',\n",
       " 'MEDAGE_CY',\n",
       " 'MEDHINC_CY',\n",
       " 'BACHDEG_CY']"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "analysis_variables = [\n",
    "    \"TOTPOP_CY\",  # Population: Total Population (Esri)\n",
    "    \"DIVINDX_CY\",  # Diversity Index (Esri)\n",
    "    \"AVGHHSZ_CY\",  # Average Household Size (Esri)\n",
    "    \"MEDAGE_CY\",  # Age: Median Age (Esri)\n",
    "    \"MEDHINC_CY\",  # Income: Median Household Income (Esri)\n",
    "    \"BACHDEG_CY\",  # Education: Bachelor's Degree (Esri)\n",
    "]\n",
    "\n",
    "analysis_variables"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Define Study Areas\n",
    "\n",
    "The enrich capability in Business Analyst requires polygon areas to be used for [apportioning demographic data](https://developers.arcgis.com/rest/GeoEnrichment/api-reference/data-apportionment.htm) to the input geographies. In this case, they are addresses defining store locations. Geocoding can be used to get the location of the stores, but the `enrich` method still requires areas to be able to apportion demographic data.\n",
    "\n",
    "First, we can use geocoding to get the geographic location of all the stores. Since we are using a Pandas DataFrame, we can take advantage of data manipulation and schema pruning. Firstly, to concatenate the components of the addresss into a concise column for geocoding. Secondly, by reducing the geocoding response to just columns we need for subsequent analysis steps."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>loc_id</th>\n",
       "      <th>full_address</th>\n",
       "      <th>SHAPE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Facility 1</td>\n",
       "      <td>2468 SOUTH ST ANDREWS PLACE, LOS ANGELES, CA 9...</td>\n",
       "      <td>{\"x\": -118.31127251419741, \"y\": 34.03313999252...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Facility 2</td>\n",
       "      <td>2300 W. WASHINGTON BLVD., LOS ANGELES, CA 90018</td>\n",
       "      <td>{\"x\": -118.31183535899584, \"y\": 34.03988893331...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Facility 3</td>\n",
       "      <td>4060 E. WHITTIER BLVD., LOS ANGELES, CA 90023</td>\n",
       "      <td>{\"x\": -118.1843180294075, \"y\": 34.023902464669...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Facility 4</td>\n",
       "      <td>6070 W. PICO BOULEVARD, LOS ANGELES, CA 90035</td>\n",
       "      <td>{\"x\": -118.37276542483494, \"y\": 34.05264979417...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Facility 5</td>\n",
       "      <td>1480 S. LA CIENEGA BL, LOS ANGELES, CA 90035</td>\n",
       "      <td>{\"x\": -118.37613251915946, \"y\": 34.05099298527...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       loc_id                                       full_address  \\\n",
       "0  Facility 1  2468 SOUTH ST ANDREWS PLACE, LOS ANGELES, CA 9...   \n",
       "1  Facility 2    2300 W. WASHINGTON BLVD., LOS ANGELES, CA 90018   \n",
       "2  Facility 3      4060 E. WHITTIER BLVD., LOS ANGELES, CA 90023   \n",
       "3  Facility 4      6070 W. PICO BOULEVARD, LOS ANGELES, CA 90035   \n",
       "4  Facility 5       1480 S. LA CIENEGA BL, LOS ANGELES, CA 90035   \n",
       "\n",
       "                                               SHAPE  \n",
       "0  {\"x\": -118.31127251419741, \"y\": 34.03313999252...  \n",
       "1  {\"x\": -118.31183535899584, \"y\": 34.03988893331...  \n",
       "2  {\"x\": -118.1843180294075, \"y\": 34.023902464669...  \n",
       "3  {\"x\": -118.37276542483494, \"y\": 34.05264979417...  \n",
       "4  {\"x\": -118.37613251915946, \"y\": 34.05099298527...  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from arcgis.features import GeoAccessor\n",
    "from arcgis.geocoding import get_geocoders\n",
    "\n",
    "# ensure using intended geocoder\n",
    "agol_geocoder = get_geocoders(gis)[0]\n",
    "\n",
    "# geocode the addresses and prune the retunred columns\n",
    "geocode_df = GeoAccessor.from_df(\n",
    "    candidate_df, address_column=\"full_address\", geocoder=agol_geocoder\n",
    ").loc[:, [\"loc_id\", \"full_address\", \"SHAPE\"]]\n",
    "\n",
    "# following pruning schema, re-enable spatial\n",
    "geocode_df.spatial.set_geometry(\"SHAPE\")\n",
    "assert geocode_df.spatial.validate()\n",
    "\n",
    "geocode_df"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As in the example from the first Notebook, **study areas** can be polygons defined manually beforehand and provided as input. They can also be standard geographic areas defined with the unique identifiers for the areas, such as postal (ZIP) codes. Finally, as is the case with our example, study areas can be provided as lines or points. Since lines and points do not define an area, in these cases, polygons are created on the server to use for apportioning data to each location.\n",
    "\n",
    "The polygons created around lines and points, by default, is a five kilometer straight-line buffered area. This can be controlled using the `proximity` parameters of the enrich method; `proximity_type`, `proximity_value` and `proximity_metric`. For line geometries, only the straight line method can be used, but for point geometries, any transportation network method available in the GIS can be used to define the area surrounding the points, thus delineating the study areas to be used.\n",
    "\n",
    "#### Discover Available Travel Modes\n",
    "\n",
    "In the example we know customers will travel about eight minutes to visit the store locations. The enrich method is capable of creating eight-minute drive time areas around the stores for us, but we need to know how to provide the correct inputs. We can discover available travel modes using the `travel_modes` property."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>alias</th>\n",
       "      <th>description</th>\n",
       "      <th>type</th>\n",
       "      <th>impedance</th>\n",
       "      <th>impedance_category</th>\n",
       "      <th>time_attribute_name</th>\n",
       "      <th>distance_attribute_name</th>\n",
       "      <th>travel_mode_id</th>\n",
       "      <th>travel_mode_dict</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>driving_time</td>\n",
       "      <td>Driving Time</td>\n",
       "      <td>Models the movement of cars and other similar ...</td>\n",
       "      <td>AUTOMOBILE</td>\n",
       "      <td>TravelTime</td>\n",
       "      <td>temporal</td>\n",
       "      <td>TravelTime</td>\n",
       "      <td>Kilometers</td>\n",
       "      <td>FEgifRtFndKNcJMJ</td>\n",
       "      <td>{\"attributeParameterValues\": [{\"attributeName\"...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>driving_distance</td>\n",
       "      <td>Driving Distance</td>\n",
       "      <td>Models the movement of cars and other similar ...</td>\n",
       "      <td>AUTOMOBILE</td>\n",
       "      <td>Kilometers</td>\n",
       "      <td>distance</td>\n",
       "      <td>TravelTime</td>\n",
       "      <td>Kilometers</td>\n",
       "      <td>iKjmHuBSIqdEfOVr</td>\n",
       "      <td>{\"attributeParameterValues\": [{\"attributeName\"...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>trucking_time</td>\n",
       "      <td>Trucking Time</td>\n",
       "      <td>Models basic truck travel by preferring design...</td>\n",
       "      <td>TRUCK</td>\n",
       "      <td>TruckTravelTime</td>\n",
       "      <td>temporal</td>\n",
       "      <td>TruckTravelTime</td>\n",
       "      <td>Kilometers</td>\n",
       "      <td>ZzzRtYcPLjXFBKwr</td>\n",
       "      <td>{\"attributeParameterValues\": [{\"attributeName\"...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>trucking_distance</td>\n",
       "      <td>Trucking Distance</td>\n",
       "      <td>Models basic truck travel by preferring design...</td>\n",
       "      <td>TRUCK</td>\n",
       "      <td>Kilometers</td>\n",
       "      <td>distance</td>\n",
       "      <td>TruckTravelTime</td>\n",
       "      <td>Kilometers</td>\n",
       "      <td>UBaNfFWeKcrRVYIo</td>\n",
       "      <td>{\"attributeParameterValues\": [{\"attributeName\"...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>walking_time</td>\n",
       "      <td>Walking Time</td>\n",
       "      <td>Follows paths and roads that allow pedestrian ...</td>\n",
       "      <td>WALK</td>\n",
       "      <td>WalkTime</td>\n",
       "      <td>temporal</td>\n",
       "      <td>WalkTime</td>\n",
       "      <td>Kilometers</td>\n",
       "      <td>caFAgoThrvUpkFBW</td>\n",
       "      <td>{\"attributeParameterValues\": [{\"attributeName\"...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>walking_distance</td>\n",
       "      <td>Walking Distance</td>\n",
       "      <td>Follows paths and roads that allow pedestrian ...</td>\n",
       "      <td>WALK</td>\n",
       "      <td>Kilometers</td>\n",
       "      <td>distance</td>\n",
       "      <td>WalkTime</td>\n",
       "      <td>Kilometers</td>\n",
       "      <td>yFuMFwIYblqKEefX</td>\n",
       "      <td>{\"attributeParameterValues\": [{\"attributeName\"...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>rural_driving_time</td>\n",
       "      <td>Rural Driving Time</td>\n",
       "      <td>Models the movement of cars and other similar ...</td>\n",
       "      <td>AUTOMOBILE</td>\n",
       "      <td>TravelTime</td>\n",
       "      <td>temporal</td>\n",
       "      <td>TravelTime</td>\n",
       "      <td>Kilometers</td>\n",
       "      <td>NmNhNDUwZmE1YTlj</td>\n",
       "      <td>{\"attributeParameterValues\": [{\"attributeName\"...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>rural_driving_distance</td>\n",
       "      <td>Rural Driving Distance</td>\n",
       "      <td>Models the movement of cars and other similar ...</td>\n",
       "      <td>AUTOMOBILE</td>\n",
       "      <td>Kilometers</td>\n",
       "      <td>distance</td>\n",
       "      <td>TravelTime</td>\n",
       "      <td>Kilometers</td>\n",
       "      <td>Yzk3NjI1NTU5NjVj</td>\n",
       "      <td>{\"attributeParameterValues\": [{\"attributeName\"...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     name                   alias  \\\n",
       "0            driving_time            Driving Time   \n",
       "1        driving_distance        Driving Distance   \n",
       "2           trucking_time           Trucking Time   \n",
       "3       trucking_distance       Trucking Distance   \n",
       "4            walking_time            Walking Time   \n",
       "5        walking_distance        Walking Distance   \n",
       "6      rural_driving_time      Rural Driving Time   \n",
       "7  rural_driving_distance  Rural Driving Distance   \n",
       "\n",
       "                                         description        type  \\\n",
       "0  Models the movement of cars and other similar ...  AUTOMOBILE   \n",
       "1  Models the movement of cars and other similar ...  AUTOMOBILE   \n",
       "2  Models basic truck travel by preferring design...       TRUCK   \n",
       "3  Models basic truck travel by preferring design...       TRUCK   \n",
       "4  Follows paths and roads that allow pedestrian ...        WALK   \n",
       "5  Follows paths and roads that allow pedestrian ...        WALK   \n",
       "6  Models the movement of cars and other similar ...  AUTOMOBILE   \n",
       "7  Models the movement of cars and other similar ...  AUTOMOBILE   \n",
       "\n",
       "         impedance impedance_category time_attribute_name  \\\n",
       "0       TravelTime           temporal          TravelTime   \n",
       "1       Kilometers           distance          TravelTime   \n",
       "2  TruckTravelTime           temporal     TruckTravelTime   \n",
       "3       Kilometers           distance     TruckTravelTime   \n",
       "4         WalkTime           temporal            WalkTime   \n",
       "5       Kilometers           distance            WalkTime   \n",
       "6       TravelTime           temporal          TravelTime   \n",
       "7       Kilometers           distance          TravelTime   \n",
       "\n",
       "  distance_attribute_name    travel_mode_id  \\\n",
       "0              Kilometers  FEgifRtFndKNcJMJ   \n",
       "1              Kilometers  iKjmHuBSIqdEfOVr   \n",
       "2              Kilometers  ZzzRtYcPLjXFBKwr   \n",
       "3              Kilometers  UBaNfFWeKcrRVYIo   \n",
       "4              Kilometers  caFAgoThrvUpkFBW   \n",
       "5              Kilometers  yFuMFwIYblqKEefX   \n",
       "6              Kilometers  NmNhNDUwZmE1YTlj   \n",
       "7              Kilometers  Yzk3NjI1NTU5NjVj   \n",
       "\n",
       "                                    travel_mode_dict  \n",
       "0  {\"attributeParameterValues\": [{\"attributeName\"...  \n",
       "1  {\"attributeParameterValues\": [{\"attributeName\"...  \n",
       "2  {\"attributeParameterValues\": [{\"attributeName\"...  \n",
       "3  {\"attributeParameterValues\": [{\"attributeName\"...  \n",
       "4  {\"attributeParameterValues\": [{\"attributeName\"...  \n",
       "5  {\"attributeParameterValues\": [{\"attributeName\"...  \n",
       "6  {\"attributeParameterValues\": [{\"attributeName\"...  \n",
       "7  {\"attributeParameterValues\": [{\"attributeName\"...  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "country.travel_modes"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Any value from the `name` column can be used direclty as input to the enrich method to define the study area `proximity_type`. For this example, to define eight minute drive times, we can populate the proximity factors accordingly."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>loc_id</th>\n",
       "      <th>full_address</th>\n",
       "      <th>source_country</th>\n",
       "      <th>area_type</th>\n",
       "      <th>buffer_units</th>\n",
       "      <th>buffer_units_alias</th>\n",
       "      <th>buffer_radii</th>\n",
       "      <th>aggregation_method</th>\n",
       "      <th>population_to_polygon_size_rating</th>\n",
       "      <th>apportionment_confidence</th>\n",
       "      <th>has_data</th>\n",
       "      <th>medage_cy</th>\n",
       "      <th>totpop_cy</th>\n",
       "      <th>avghhsz_cy</th>\n",
       "      <th>bachdeg_cy</th>\n",
       "      <th>medhinc_cy</th>\n",
       "      <th>divindx_cy</th>\n",
       "      <th>SHAPE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Facility 1</td>\n",
       "      <td>2468 SOUTH ST ANDREWS PLACE, LOS ANGELES, CA 9...</td>\n",
       "      <td>USA</td>\n",
       "      <td>NetworkServiceArea</td>\n",
       "      <td>Minutes</td>\n",
       "      <td>Drive Time Minutes</td>\n",
       "      <td>8.0</td>\n",
       "      <td>BlockApportionment:US.BlockGroups;PointsLayer:...</td>\n",
       "      <td>2.191</td>\n",
       "      <td>2.576</td>\n",
       "      <td>1</td>\n",
       "      <td>32.8</td>\n",
       "      <td>276718.0</td>\n",
       "      <td>2.81</td>\n",
       "      <td>33723.0</td>\n",
       "      <td>48083.0</td>\n",
       "      <td>87.8</td>\n",
       "      <td>{\"rings\": [[[-118.31409427984764, 34.064380416...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Facility 2</td>\n",
       "      <td>2300 W. WASHINGTON BLVD., LOS ANGELES, CA 90018</td>\n",
       "      <td>USA</td>\n",
       "      <td>NetworkServiceArea</td>\n",
       "      <td>Minutes</td>\n",
       "      <td>Drive Time Minutes</td>\n",
       "      <td>8.0</td>\n",
       "      <td>BlockApportionment:US.BlockGroups;PointsLayer:...</td>\n",
       "      <td>2.191</td>\n",
       "      <td>2.576</td>\n",
       "      <td>1</td>\n",
       "      <td>33.7</td>\n",
       "      <td>305454.0</td>\n",
       "      <td>2.68</td>\n",
       "      <td>43130.0</td>\n",
       "      <td>50213.0</td>\n",
       "      <td>88.1</td>\n",
       "      <td>{\"rings\": [[[-118.31409427984764, 34.072465217...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Facility 3</td>\n",
       "      <td>4060 E. WHITTIER BLVD., LOS ANGELES, CA 90023</td>\n",
       "      <td>USA</td>\n",
       "      <td>NetworkServiceArea</td>\n",
       "      <td>Minutes</td>\n",
       "      <td>Drive Time Minutes</td>\n",
       "      <td>8.0</td>\n",
       "      <td>BlockApportionment:US.BlockGroups;PointsLayer:...</td>\n",
       "      <td>2.191</td>\n",
       "      <td>2.576</td>\n",
       "      <td>1</td>\n",
       "      <td>30.5</td>\n",
       "      <td>170309.0</td>\n",
       "      <td>3.62</td>\n",
       "      <td>9400.0</td>\n",
       "      <td>52719.0</td>\n",
       "      <td>65.7</td>\n",
       "      <td>{\"rings\": [[[-118.16227969122916, 34.070668594...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Facility 4</td>\n",
       "      <td>6070 W. PICO BOULEVARD, LOS ANGELES, CA 90035</td>\n",
       "      <td>USA</td>\n",
       "      <td>NetworkServiceArea</td>\n",
       "      <td>Minutes</td>\n",
       "      <td>Drive Time Minutes</td>\n",
       "      <td>8.0</td>\n",
       "      <td>BlockApportionment:US.BlockGroups;PointsLayer:...</td>\n",
       "      <td>2.191</td>\n",
       "      <td>2.576</td>\n",
       "      <td>1</td>\n",
       "      <td>38.5</td>\n",
       "      <td>201739.0</td>\n",
       "      <td>2.21</td>\n",
       "      <td>54857.0</td>\n",
       "      <td>96918.0</td>\n",
       "      <td>80.4</td>\n",
       "      <td>{\"rings\": [[[-118.36597175035031, 34.088185662...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Facility 5</td>\n",
       "      <td>1480 S. LA CIENEGA BL, LOS ANGELES, CA 90035</td>\n",
       "      <td>USA</td>\n",
       "      <td>NetworkServiceArea</td>\n",
       "      <td>Minutes</td>\n",
       "      <td>Drive Time Minutes</td>\n",
       "      <td>8.0</td>\n",
       "      <td>BlockApportionment:US.BlockGroups;PointsLayer:...</td>\n",
       "      <td>2.191</td>\n",
       "      <td>2.576</td>\n",
       "      <td>1</td>\n",
       "      <td>38.6</td>\n",
       "      <td>198064.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>54132.0</td>\n",
       "      <td>97074.0</td>\n",
       "      <td>79.6</td>\n",
       "      <td>{\"rings\": [[[-118.37652690642967, 34.088185662...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       loc_id                                       full_address  \\\n",
       "0  Facility 1  2468 SOUTH ST ANDREWS PLACE, LOS ANGELES, CA 9...   \n",
       "1  Facility 2    2300 W. WASHINGTON BLVD., LOS ANGELES, CA 90018   \n",
       "2  Facility 3      4060 E. WHITTIER BLVD., LOS ANGELES, CA 90023   \n",
       "3  Facility 4      6070 W. PICO BOULEVARD, LOS ANGELES, CA 90035   \n",
       "4  Facility 5       1480 S. LA CIENEGA BL, LOS ANGELES, CA 90035   \n",
       "\n",
       "  source_country           area_type buffer_units  buffer_units_alias  \\\n",
       "0            USA  NetworkServiceArea      Minutes  Drive Time Minutes   \n",
       "1            USA  NetworkServiceArea      Minutes  Drive Time Minutes   \n",
       "2            USA  NetworkServiceArea      Minutes  Drive Time Minutes   \n",
       "3            USA  NetworkServiceArea      Minutes  Drive Time Minutes   \n",
       "4            USA  NetworkServiceArea      Minutes  Drive Time Minutes   \n",
       "\n",
       "   buffer_radii                                 aggregation_method  \\\n",
       "0           8.0  BlockApportionment:US.BlockGroups;PointsLayer:...   \n",
       "1           8.0  BlockApportionment:US.BlockGroups;PointsLayer:...   \n",
       "2           8.0  BlockApportionment:US.BlockGroups;PointsLayer:...   \n",
       "3           8.0  BlockApportionment:US.BlockGroups;PointsLayer:...   \n",
       "4           8.0  BlockApportionment:US.BlockGroups;PointsLayer:...   \n",
       "\n",
       "   population_to_polygon_size_rating  apportionment_confidence  has_data  \\\n",
       "0                              2.191                     2.576         1   \n",
       "1                              2.191                     2.576         1   \n",
       "2                              2.191                     2.576         1   \n",
       "3                              2.191                     2.576         1   \n",
       "4                              2.191                     2.576         1   \n",
       "\n",
       "   medage_cy  totpop_cy  avghhsz_cy  bachdeg_cy  medhinc_cy  divindx_cy  \\\n",
       "0       32.8   276718.0        2.81     33723.0     48083.0        87.8   \n",
       "1       33.7   305454.0        2.68     43130.0     50213.0        88.1   \n",
       "2       30.5   170309.0        3.62      9400.0     52719.0        65.7   \n",
       "3       38.5   201739.0        2.21     54857.0     96918.0        80.4   \n",
       "4       38.6   198064.0        2.18     54132.0     97074.0        79.6   \n",
       "\n",
       "                                               SHAPE  \n",
       "0  {\"rings\": [[[-118.31409427984764, 34.064380416...  \n",
       "1  {\"rings\": [[[-118.31409427984764, 34.072465217...  \n",
       "2  {\"rings\": [[[-118.16227969122916, 34.070668594...  \n",
       "3  {\"rings\": [[[-118.36597175035031, 34.088185662...  \n",
       "4  {\"rings\": [[[-118.37652690642967, 34.088185662...  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "enrich_df = country.enrich(\n",
    "    geocode_df,\n",
    "    enrich_variables=analysis_variables,\n",
    "    proximity_type=\"driving_time\",\n",
    "    proximity_value=8,\n",
    "    proximity_metric=\"minutes\",\n",
    ")\n",
    "\n",
    "\n",
    "enrich_df"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The response includes metadata related to how the enrichment was performed. However, if we are only interested in the demographic columns added, we can filter using the available enrich variable names."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>medage_cy</th>\n",
       "      <th>totpop_cy</th>\n",
       "      <th>avghhsz_cy</th>\n",
       "      <th>bachdeg_cy</th>\n",
       "      <th>medhinc_cy</th>\n",
       "      <th>divindx_cy</th>\n",
       "      <th>SHAPE</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>loc_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Facility 1</th>\n",
       "      <td>32.8</td>\n",
       "      <td>276718.0</td>\n",
       "      <td>2.81</td>\n",
       "      <td>33723.0</td>\n",
       "      <td>48083.0</td>\n",
       "      <td>87.8</td>\n",
       "      <td>{\"rings\": [[[-118.31409427984764, 34.064380416...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Facility 2</th>\n",
       "      <td>33.7</td>\n",
       "      <td>305454.0</td>\n",
       "      <td>2.68</td>\n",
       "      <td>43130.0</td>\n",
       "      <td>50213.0</td>\n",
       "      <td>88.1</td>\n",
       "      <td>{\"rings\": [[[-118.31409427984764, 34.072465217...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Facility 3</th>\n",
       "      <td>30.5</td>\n",
       "      <td>170309.0</td>\n",
       "      <td>3.62</td>\n",
       "      <td>9400.0</td>\n",
       "      <td>52719.0</td>\n",
       "      <td>65.7</td>\n",
       "      <td>{\"rings\": [[[-118.16227969122916, 34.070668594...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Facility 4</th>\n",
       "      <td>38.5</td>\n",
       "      <td>201739.0</td>\n",
       "      <td>2.21</td>\n",
       "      <td>54857.0</td>\n",
       "      <td>96918.0</td>\n",
       "      <td>80.4</td>\n",
       "      <td>{\"rings\": [[[-118.36597175035031, 34.088185662...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Facility 5</th>\n",
       "      <td>38.6</td>\n",
       "      <td>198064.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>54132.0</td>\n",
       "      <td>97074.0</td>\n",
       "      <td>79.6</td>\n",
       "      <td>{\"rings\": [[[-118.37652690642967, 34.088185662...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            medage_cy  totpop_cy  avghhsz_cy  bachdeg_cy  medhinc_cy  \\\n",
       "loc_id                                                                 \n",
       "Facility 1       32.8   276718.0        2.81     33723.0     48083.0   \n",
       "Facility 2       33.7   305454.0        2.68     43130.0     50213.0   \n",
       "Facility 3       30.5   170309.0        3.62      9400.0     52719.0   \n",
       "Facility 4       38.5   201739.0        2.21     54857.0     96918.0   \n",
       "Facility 5       38.6   198064.0        2.18     54132.0     97074.0   \n",
       "\n",
       "            divindx_cy                                              SHAPE  \n",
       "loc_id                                                                     \n",
       "Facility 1        87.8  {\"rings\": [[[-118.31409427984764, 34.064380416...  \n",
       "Facility 2        88.1  {\"rings\": [[[-118.31409427984764, 34.072465217...  \n",
       "Facility 3        65.7  {\"rings\": [[[-118.16227969122916, 34.070668594...  \n",
       "Facility 4        80.4  {\"rings\": [[[-118.36597175035031, 34.088185662...  \n",
       "Facility 5        79.6  {\"rings\": [[[-118.37652690642967, 34.088185662...  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get just the enrich columns\n",
    "enrich_cols = [\n",
    "    c for c in enrich_df if c in country.enrich_variables.name.str.lower().values\n",
    "]\n",
    "\n",
    "# combine the enrich columns with a few others we want to keep\n",
    "keep_cols = [\"loc_id\"] + enrich_cols + [\"SHAPE\"]\n",
    "\n",
    "# filter the enrich data frame to just these columns\n",
    "enrich_df = enrich_df.loc[:, keep_cols].set_index(\"loc_id\")\n",
    "\n",
    "# re-enable spatial awareness\n",
    "enrich_df.spatial.set_geometry(\"SHAPE\")\n",
    "\n",
    "enrich_df"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Evaluate Results\n",
    "\n",
    "An extremely effective starting point for analysis is visualizing the results. Here, we are using `matplotlib` to visualize the differences between the locations based on the enriched data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1296x720 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# this is due to a deprication warning inside matplotlib\n",
    "import warnings\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "fig, axs = plt.subplots(2, 3)\n",
    "fig.set_figheight(10.0)\n",
    "fig.set_figwidth(18.0)\n",
    "fig.subplots_adjust(hspace=0.4)\n",
    "\n",
    "plt.sca(axs[0, 0])\n",
    "_ = enrich_df.medage_cy.plot(title=\"Median Age\", kind=\"bar\")\n",
    "\n",
    "plt.sca(axs[0, 1])\n",
    "_ = enrich_df.totpop_cy.plot(title=\"Total Population\", kind=\"bar\")\n",
    "\n",
    "plt.sca(axs[0, 2])\n",
    "_ = enrich_df.avghhsz_cy.plot(title=\"Average Household Size\", kind=\"bar\")\n",
    "\n",
    "plt.sca(axs[1, 0])\n",
    "_ = enrich_df.bachdeg_cy.plot(title=\"Bachelor's Degree\", kind=\"bar\")\n",
    "\n",
    "plt.sca(axs[1, 1])\n",
    "_ = enrich_df.medhinc_cy.plot(title=\"Median Household Income\", kind=\"bar\")\n",
    "\n",
    "plt.sca(axs[1, 2])\n",
    "_ = enrich_df.divindx_cy.plot(title=\"Diversity Index\", kind=\"bar\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As in Part 1:  \n",
    "Facility 1 and facility 2 have higher populations, and are diverse with less income. Facility 3 is far younger with larger households, less education, and have lower incomes. Facility 4 and facility 5 are older, more educated and have a higher income.\n",
    "\n",
    "If interested in opening a discount department store, facility 2 is the most attractive location with facility 1 as a close second. The diversity and lower income can allow us to conclude that people will buy at lower prices.\n",
    "\n",
    "If interested in opening a quick service restaurant, facility 3 may be the best option to meet the needs of a young, busy and price conscious population.\n",
    "\n",
    "Obviously, depending on the key characteristics of the business looking for a new location, the key demographic indicators will be different. Using geoenrichment, paired with the ArcGIS API for Python, enables extremely quick access to demographic variables for informed decision making."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.11 [MSC v.1931 64 bit (AMD64)]"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "07c13af76457a6f4e5d5b34d0e1bc42b2e017343b05b916c8871f483eed35ce6"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
